home *** CD-ROM | disk | FTP | other *** search
/ Internet Publisher's Toolbox 2.0 / Internet Publisher's Toolbox.iso / demo / photoshp / disks35 / disk1 / photoshp.ms_ / photoshp.bin
Encoding:
Text File  |  1995-07-26  |  20.5 KB  |  726 lines

  1. '*           Adobe Photoshop Installer
  2. '*
  3. '* June 5, 1993  Marshall Spight (original Premiere ver)
  4. '* June 16, 1993 Dave Corboy (modified for Photoshop)
  5. '*
  6. '*
  7. '*
  8. '*
  9.  
  10. '$DEFINE DEBUG  ''Define for script development/debugging
  11.  
  12. '$INCLUDE 'setupapi.inc'
  13. '$INCLUDE 'msdetect.inc'
  14.  
  15. ''CONST B$ = "Installation Problem"
  16. ''CONST C$ = "Setup sources were corrupted!"
  17.  
  18. '' It's always hard to remember the syntax of the following function:
  19. ''i% = DoMsgBox( "Foo", "Bar", MB_OK )
  20.  
  21. ''following were taken from windows.h. &H means they're hex
  22. CONST WS_VISIBLE=&H10000000
  23. CONST WS_BORDER =&H00800000
  24. CONST WS_CLIPCHILDREN =&H02000000
  25. CONST GWL_STYLE =-16
  26. CONST SW_SHOWMAXIMIZED=3
  27.  
  28.  
  29.  
  30. DECLARE FUNCTION ShowWindow  LIB "user.exe" (hWnd%,iShow%) AS INTEGER
  31. DECLARE FUNCTION SetWindowLong LIB "user.exe" (hWnd%, offset%, style&) AS LONG
  32.  
  33.  
  34. ''Dialog ID's
  35. CONST ASKQUIT      = 100
  36. CONST DESTPATH     = 200
  37. CONST EXITFAILURE  = 300
  38. CONST EXITQUIT     = 400
  39. CONST EXITSUCCESS  = 500
  40. CONST EXITRESTART  = 550
  41. CONST OPTIONS      = 600
  42. CONST APPHELP      = 700
  43. CONST CUSTINST     = 800
  44. CONST CUSTINSTCD   = 801
  45. CONST TOOBIG       = 900
  46. CONST BADPATH      = 1000
  47. CONST NOVM         = 1100
  48. CONST NEED31       = 1200
  49. CONST NEEDENH      = 1300
  50. CONST NEEDSHARE    = 1400
  51. CONST CORRUPT      = 1500
  52.  
  53. CONST PERSONALIZE  = 10000
  54.  
  55. ''Bitmap ID
  56. CONST LOGO         = 1
  57.  
  58. ''File Types
  59.  
  60. CONST PROGRAMFILES  = 1
  61. CONST TUTORIALFILES = 2
  62. CONST FILTERFILES   = 3
  63.  
  64. CONST   NUMGROUPS      = 3      '' Number of file groups: PROGRAM to TUTORIAL
  65.  
  66.  
  67. GLOBAL DEST$        ''Default destination directory.
  68. GLOBAL DESTSYS$
  69. GLOBAL DEST32S$
  70. GLOBAL WINDRIVE$    ''Windows drive letter.
  71. GLOBAL WINDIR$      ''Windows directory without drive letter.
  72. GLOBAL PHOTOCDDRIVE$
  73. GLOBAL PHOTOCDPT$
  74. GLOBAL PHOTOCDCP$
  75. GLOBAL ENOUGHDISK%  ''Enough space to install
  76.  
  77. ''CustInst list symbol names
  78.  
  79. GLOBAL PROGRAMNEEDS$
  80. GLOBAL TUTORIALNEEDS$
  81. GLOBAL FILTERNEEDS$
  82.  
  83. GLOBAL EXTRACOSTS$  ''List of extra costs to add per drive
  84. GLOBAL BIGLIST$     ''List of option files cost calc results (boolean)
  85.  
  86. ''Dialog list symbol names
  87. GLOBAL CHECKSTATES$
  88. GLOBAL STATUSTEXT$
  89. GLOBAL DRIVETEXT$
  90.  
  91. GLOBAL InstallWin32s%
  92. GLOBAL CD%
  93. GLOBAL OnWin32S%
  94.  
  95. DECLARE SUB AddOptFilesToCopyList (ftype%, bogus%)
  96. DECLARE SUB RecalcOptFiles (ftype%)
  97. DECLARE SUB RecalcPath
  98. DECLARE SUB SetDriveStatus
  99. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  100. DECLARE FUNCTION CDInstall LIB "mscuistf.dll" AS INTEGER
  101. DECLARE FUNCTION OnWindowsNT LIB "INIUPD.DLL" AS INTEGER
  102. DECLARE FUNCTION GetCDDrive LIB "mscuistf.dll" AS INTEGER
  103. DECLARE FUNCTION GetWindowsEnvironment LIB "mscuistf.dll" AS INTEGER
  104. DECLARE SUB XXX LIB "mscuistf.dll" (arg$)
  105. DECLARE SUB FixScreenProc LIB "mscuistf.dll" (arg%)
  106. DECLARE SUB UpdateSystemIni
  107.  
  108. DECLARE FUNCTION MakeSystemIni LIB "INIUPD.DLL" (arg1$, arg2$) AS INTEGER
  109. DECLARE FUNCTION RestartWindows LIB "INIUPD.DLL" AS INTEGER
  110. DECLARE FUNCTION PagingEnabled LIB "INIUPD.DLL" AS INTEGER
  111. DECLARE FUNCTION ShareEnabled LIB "INIUPD.DLL" AS INTEGER
  112. DECLARE FUNCTION IsWin32sLoaded LIB "INIUPD.DLL" (arg1$) AS INTEGER
  113. DECLARE FUNCTION ExitWindowsExec LIB "USER.EXE" (arg1$, arg2$) AS INTEGER
  114. DECLARE FUNCTION WritePrivateProfileString LIB "krnl386.exe" (szSect$, szEntry$, szString$, szINI$) AS INTEGER
  115.  
  116.  
  117.  
  118. INIT:
  119.     hWnd%=HwndFrame()
  120.     FixScreenProc ( hWnd% )
  121.     SWLxx&=SetWindowLong(hWnd%,GWL_STYLE,WS_VISIBLE+WS_BORDER+WS_CLIPCHILDREN)
  122.     SWyy%=ShowWindow(hWnd%,SW_SHOWMAXIMIZED)
  123.  
  124.     INSTALLDLL$ = "mscuistf.dll"        ''custom functions
  125.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  126.  
  127.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  128.     IF szInf$ = "" THEN
  129.     szInf$ = GetSymbolValue("STF_CWDDIR") + "PHOTOSHP.INF"
  130.     END IF
  131.     ReadInfFile szInf$
  132.  
  133.     SetBitmap INSTALLDLL$, LOGO
  134.     SetTitle "Adobe Photoshop Installer"
  135.  
  136.     CD = 0
  137.  
  138.     MajorVer% = GetWindowsMajorVersion()
  139.     MinorVer% = GetWindowsMinorVersion()
  140.  
  141.     IF MajorVer% < 3 OR (MajorVer% = 3 AND MinorVer% < 10) THEN
  142.         sz$ = UIStartDlg(INSTALLDLL$, NEED31, "FInfo0DlgProc", 0, "")
  143.         UIPop 1
  144.         ERR% = STFQUIT '' Need windows 3.1 or later.
  145.         GOTO QUIT
  146.     END IF
  147.  
  148.  
  149.     InstallWin32s = 1
  150.     IF MajorVer% > 3 THEN
  151.         InstallWin32s% = 0
  152.     END IF
  153.  
  154.  
  155.     IF OnWindowsNT () OR GetWindowsEnvironment () <> 0 THEN
  156.         InstallWin32s% = 0
  157.         OnWin32S = 0
  158.     ELSE 
  159.         OnWin32S = 1
  160.         IF GetWindowsMode < 2 THEN
  161.             sz$ = UIStartDlg(INSTALLDLL$, NEEDENH, "FInfo0DlgProc", 0, "")
  162.             UIPop 1
  163.             ERR% = STFQUIT '' Not Enhanced mode.
  164.             GOTO QUIT
  165.         END IF  
  166.     END IF
  167.  
  168.  
  169.     '' Get version of Win32s to be installed from version info in file
  170. ''    szNewVer$ = GetVersionOfFile( GetSymbolValue("STF_SRCDIR") + "WIN32S16.DLL" )
  171.  
  172.      szNewVer$ = GetSectionKeyVersion("Win32sWinSys", "win32s16")
  173.  
  174.     DESTSYS$ = GetWindowsSysDir()
  175.     DEST32S$ = DESTSYS$ + "WIN32S\"
  176.     szOldVer$ ="1.00.000     "          ''Reserve space in string for version
  177.     '' If Win32s is already installed, get running version number
  178.     i% = DoesFileExist( DESTSYS$ + "W32SYS.DLL", femExists )
  179.     IF i% = 1 THEN
  180.     i% = IsWin32sLoaded( szOldVer$ )
  181.     ENDIF
  182.  
  183.     IF i% <> 0  AND  szNewVer$ <> "" THEN
  184.         IF szNewVer$ > szOldVer$ THEN
  185.             '' do nothing
  186.         ELSE
  187.             InstallWin32s% = 0
  188.         END IF
  189.     END IF
  190.  
  191.     IF InstallWin32s = 1 AND PagingEnabled() = 0 THEN
  192.     sz$ = UIStartDlg(INSTALLDLL$, NOVM, "FInfo0DlgProc", 0, "")
  193.     UIPop 1
  194.     ERR% = STFQUIT '' Enhanced mode but not paging
  195.     GOTO QUIT
  196.     END IF
  197.  
  198.     ''IF ShareEnabled() = 0 THEN
  199.     ''sz$ = UIStartDlg(INSTALLDLL$, NEEDSHARE, "FInfo0DlgProc", 0, "")
  200.     ''UIPop 1
  201.     ''ERR% = STFQUIT
  202.     ''GOTO QUIT
  203.     ''END IF
  204.  
  205.  
  206.     WINDRIVE$ = MID$(GetWindowsDir, 1, 1)
  207.     IF OnWindowsNT() THEN
  208.         DEST$ = WINDRIVE$ + ":\WIN32APP\PHOTOSHP"
  209.     ELSE
  210.         IF GetWindowsEnvironment() = 0     THEN   
  211.             DEST$ = WINDRIVE$ + ":\PHOTOSHP"
  212.         ELSE
  213.             DEST$ = WINDRIVE$ + ":\WIN32APP\PHOTOSHP"    
  214.         END IF             
  215.     END IF
  216.     SetRestartDir GetWindowsDir()
  217.  
  218.     ''CustInst list symbols
  219.     CHECKSTATES$ = "CheckItemsState"
  220.     STATUSTEXT$  = "StatusItemsText"
  221.     DRIVETEXT$   = "DriveStatusText"
  222.     FOR i% = 1 TO NUMGROUPS STEP 1
  223.     AddListItem CHECKSTATES$, "ON"
  224.     NEXT i%
  225.     FOR i% = 1 TO NUMGROUPS STEP 1
  226.     AddListItem STATUSTEXT$, ""
  227.     NEXT i%
  228.     FOR i% = 1 TO 7 STEP 1
  229.     AddListItem DRIVETEXT$, ""
  230.     NEXT i%
  231.     ReplaceListItem DRIVETEXT$, 7, DEST$
  232.  
  233.     ''Disk cost list symbols
  234.  
  235.     PROGRAMNEEDS$  = "ProgramNeeds"
  236.     TUTORIALNEEDS$ = "TutorialNeeds"
  237.     FILTERNEEDS$   = "FilterNeeds"
  238.  
  239.     EXTRACOSTS$ = "ExtraCosts"
  240.     BIGLIST$    = "BigList"
  241.  
  242.     FOR i% = 1 TO NUMGROUPS STEP 1
  243.     AddListItem BIGLIST$, ""
  244.     NEXT i%
  245.     FOR i% = 1 TO 26 STEP 1
  246.     AddListItem EXTRACOSTS$, "0"
  247.     NEXT i%
  248.  
  249.     '' PhotoCD rigamarole
  250.     WINDIR$ = MID$( GetWindowsDir(), 3, LEN( GetWindowsDir() ) - 2 )
  251.     IF  DoesFileExist( GetWindowsDir() + "kpcms.ini", femExists ) = 1 THEN
  252.         PHOTOCDDRIVE$ = GetIniKeyString( GetWindowsDir() + "KPCMS.INI", "KEPS Precision", "DRIVE" )
  253.         PHOTOCDPT$ = GetIniKeyString( GetWindowsDir() + "KPCMS.INI", "API", "PT_DIR" )
  254.         PHOTOCDCP$ = GetIniKeyString( GetWindowsDir() + "KPCMS.INI", "KCP", "CP_DIR" )
  255.  
  256.         '' Clean up after Marshall
  257.         IF (MID$(PHOTOCDPT$, 2, 1) = ":") THEN
  258.             PHOTOCDPT$ = MID$(PHOTOCDPT$, 3, LEN(PHOTOCDPT$)-2)
  259.             CreateIniKeyValue GetWindowsDir() + "KPCMS.INI", "API", "PT_DIR", PHOTOCDPT$, cmoOverwrite
  260.         END IF    
  261.         IF (MID$(PHOTOCDCP$, 2, 1) = ":") THEN
  262.             PHOTOCDCP$ = MID$(PHOTOCDCP$, 3, LEN(PHOTOCDCP$)-2)
  263.             CreateIniKeyValue GetWindowsDir() + "KPCMS.INI", "KCP", "CP_DIR", PHOTOCDCP$, cmoOverwrite
  264.         END IF
  265.                             
  266.     ELSE
  267.         PHOTOCDDRIVE$ = WINDRIVE$ + ":"
  268.         PHOTOCDPT$ = WINDIR$ + "PHOTOCD\"
  269.         PHOTOCDCP$ = WINDIR$ + "PHOTOCD\"
  270.         CreateIniKeyValue GetWindowsDir() + "KPCMS.INI", "KEPS Precision", "DRIVE", WINDRIVE$ + ":", cmoOverwrite
  271.         CreateIniKeyValue GetWindowsDir() + "KPCMS.INI", "API", "PT_DIR", PHOTOCDPT$, cmoOverwrite
  272.         CreateIniKeyValue GetWindowsDir() + "KPCMS.INI", "KCP", "CP_DIR", PHOTOCDCP$, cmoOverwrite
  273.  
  274.         CreateIniKeyValue GetWindowsDir() + "KPCMS.INI", "API", "CFG_FILE", "KPPrefs.cfg", cmoOverwrite
  275.         CreateIniKeyValue GetWindowsDir() + "KPCMS.INI", "KCP", "CTE_NAME", "", cmoOverwrite
  276.  
  277.         CreateDir GetWindowsDir() + "PHOTOCD", cmoNone
  278.  
  279.     END IF
  280.  
  281.     RecalcPath
  282.     SetDriveStatus
  283.  
  284. '$IFDEF DEBUG
  285.     i% = SetSizeCheckMode(scmOnIgnore)    '' could use scmOff; def = scmOnFatal
  286. '$ENDIF ''DEBUG
  287.  
  288.  
  289.  
  290. CUSTINST:
  291.  
  292.     GOTO GETPATH
  293.  
  294. CUSTINST2:
  295.  
  296.     ''Install only if it will fit.
  297.     IF ENOUGHDISK% = 0 THEN
  298.         GOSUB TOOBIG
  299.         GOTO CUSTINST
  300.     END IF
  301.     UIPop 1
  302.  
  303. INSTALL:
  304.  
  305.     IF (MID$(DEST$, LEN(DEST$), 1) <> ":") THEN
  306.         CreateDir DEST$, cmoNone
  307.     END IF
  308.  
  309.     RemoveFile GetWindowsDir() + "PHOTOS30.INI", cmoNone
  310.     CreateDir DEST$ + "\PLUGINS", cmoNone
  311.  
  312.     IF InstallWin32s = 1 THEN
  313.         CreateDir DEST32S$, cmoNone
  314.         IF  DoesFileExist( GetWindowsSysDir() + "olecli.dll", femExists ) = 1 THEN
  315.             IF  DoesFileExist( GetWindowsSysDir() + "olecli.w31", femExists ) = 0 THEN
  316.                 CopyFile GetWindowsSysDir() + "olecli.dll", GetWindowsSysDir() + "olecli.w31", cmoOverwrite, 0
  317.             END IF
  318.         END IF
  319.     END IF
  320.  
  321.     CreateDir DEST$ + "\TUTORIAL", cmoNone
  322.  
  323.     CreateDir DEST$ + "\PLUGINS", cmoNone
  324.     CreateDir DEST$ + "\PLUGINS\LtStyles", cmoNone
  325.  
  326.     ClearCopyList
  327.  
  328.  
  329.     AddOptFilesToCopyList PROGRAMFILES, 0
  330.     AddOptFilesToCopyList TUTORIALFILES, 0
  331.     AddOptFilesToCopyList FILTERFILES, 0
  332.     CopyFilesInCopyList
  333.  
  334.     ''Updating PHOTOSHOP.INI 
  335.     IF  DoesFileExist( GetWindowsDir() + "photoshp.ini", femExists ) = 1 THEN
  336.         CreateIniKeyValue GetWindowsDir() + "photoshp.ini", "Photoshop", "NOTE", "The name of the INI file for Photoshop 3.0 is photos30.ini", cmoOverwrite
  337.     END IF
  338.  
  339.     CreateIniKeyValue GetWindowsDir() + "photos30.ini", "Photoshop", "PhotoshopDirectory", DEST$ + "\", cmoOverwrite
  340.     CreateIniKeyValue GetWindowsDir() + "photos30.ini", "Photoshop", "PlugInDirectory", DEST$ + "\PLUGINS", cmoOverwrite
  341.     CreateIniKeyValue GetWindowsDir() + "photos30.ini", "Photoshop", "StartUpImageDirectory", DEST$ + "\TUTORIAL", cmoOverwrite
  342.  
  343.     CreateIniKeyValue "win.ini", "Extensions", "psd", DEST$ + "\photoshp.exe ^.psd", cmoOverwrite
  344.  
  345.     IF OnWin32S = 1    THEN
  346.         CopyFile GetWindowsDir() + "system.ini", GetWindowsDir() + "system.bak", cmoOverwrite, 0
  347.         CreateIniKeyValue GetWindowsDir() + "system.ini", "drivers", "adobekey", "adobekey.drv", cmoOverwrite
  348.         CreateIniKeyValue GetWindowsDir() + "system.ini", "drivers", "adobemse", "adobemse.drv", cmoOverwrite
  349.     END IF
  350.  
  351.     IF InstallWin32s = 1 THEN
  352.  
  353.         CreateIniKeyValue DESTSYS$ + "WIN32S.INI", "Win32s", "Setup", "0", cmoOverwrite
  354.  
  355.         '' Indicate Win32s install failure until all files known to be copied.
  356.         ExitCode% = EXITFAILURE
  357.         ERR = 0
  358.         UpdateSystemIni
  359.         '' Terminate if unhandled fatal error
  360.         IF ERR <> 0 THEN
  361.             GOTO QUIT
  362.         END IF
  363.  
  364.         CreateIniKeyValue DESTSYS$ + "WIN32S.INI", "Win32s", "Setup", "1", cmoOverwrite
  365.         CreateIniKeyValue DESTSYS$ + "WIN32S.INI", "Win32s", "Version", szNewVer$, cmoOverwrite
  366.         CreateIniKeyValue DESTSYS$ + "WIN32S.INI", "Nls", "AnsiCP", "1252", cmoOverwrite
  367.  
  368.     END IF
  369.  
  370.  
  371.     CreateProgmanGroup "Adobe", "", cmoNone
  372.     ShowProgmanGroup  "Adobe", 1, cmoNone
  373.  
  374.     CreateProgmanItem "Adobe", "Photoshop 3.0.4 Tryout", MakePath( DEST$, "photoshp.exe" ), "", cmoOverwrite
  375.     CreateProgmanItem "Adobe", "Photoshop ReadMe", "write.exe " + MakePath( DEST$, "tryout.wri" ), "", cmoOverwrite
  376.  
  377.     '' Remove the compatibility32 option from win.ini if win95
  378.     IF OnWindowsNT () = 0 AND GetWindowsEnvironment() <> 0 THEN     
  379.         RemoveIniKey "WIN.INI", "Compatibility32", "PHOTOSHP", cmoNone
  380.     END IF
  381.  
  382.  
  383. QUIT:
  384.     ON ERROR GOTO ERRQUIT
  385.  
  386.     IF ERR = 0 THEN
  387.         IF RestartListEmpty() = 0  OR  InstallWin32s = 1  THEN
  388.             GOTO QUITR
  389.         ELSE
  390.             dlg% = EXITSUCCESS
  391.         END IF
  392.     ELSEIF ERR = STFQUIT THEN
  393.         dlg% = EXITQUIT
  394.     ELSE
  395.         dlg% = EXITFAILURE
  396.     END IF
  397.  
  398. QUITL1:
  399.     sz$ = UIStartDlg(INSTALLDLL$, dlg%, "FInfo0DlgProc", 0, "")
  400.     IF sz$ = "REACTIVATE" THEN
  401.     GOTO QUITL1
  402.     END IF
  403.     UIPop 1
  404.  
  405.     END
  406.  
  407. QUITR:
  408.     sz$ = UIStartDlg(INSTALLDLL$, EXITRESTART, "FInfo0DlgProc", 0, "")
  409.     IF sz$ = "REACTIVATE" THEN
  410.     GOTO QUITR
  411.     END IF
  412.     UIPop 1
  413.  
  414.     i% = ExitWindowsExec( GetWindowsDir() + "_MSRSTRT.EXE", "_MSSETUP.BAT" )
  415.  
  416. ''      i% = RestartListEmpty()
  417. ''      IF i% = 0 THEN
  418. ''              i% = ExitExecRestart()
  419. ''      ELSE
  420. ''              i% = ExitWindowsExec( GetWindowsDir() + "_MSRSTRT.EXE", "_MSSETUP.BAT" )
  421. ''      ENDIF
  422.     GOTO QUITR
  423.  
  424. ERRQUIT:
  425.     sz$ = UIStartDlg(INSTALLDLL$, CORRUPT, "FInfo0DlgProc", 0, "")
  426.     UIPop 1
  427.     END
  428.  
  429. GETPATH:
  430.     SetSymbolValue "EditTextIn", DEST$
  431.     SetSymbolValue "EditFocus", "END"
  432. GETPATHL1:
  433.     sz$ = UIStartDlg(INSTALLDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$)
  434.  
  435.     IF sz$ = "CONTINUE" THEN
  436.     olddest$ = DEST$
  437.     DEST$ = GetSymbolValue("EditTextOut")
  438.  
  439.     ''Validate new path.
  440.     IF IsDirWritable(DEST$) = 0 THEN
  441.         GOSUB BADPATH
  442.         GOTO GETPATHL1
  443.     END IF
  444.     UIPop 1
  445.  
  446.     IF (MID$(DEST$, LEN(DEST$), 1) = "\") THEN
  447.         DEST$ = MID$(DEST$, 1, LEN(DEST$)-1)
  448.     END IF
  449.  
  450.     ''Truncate display if too long.
  451.     IF LEN(DEST$) > 23 THEN
  452.         ReplaceListItem DRIVETEXT$, 7, MID$(DEST$, 1, 23)+"..."
  453.     ELSE
  454.         ReplaceListItem DRIVETEXT$, 7, DEST$
  455.     END IF
  456.  
  457.     ''Recalc if path changed.
  458.     IF (olddest$ <> DEST$) THEN
  459.         RecalcPath
  460.         SetDriveStatus
  461.     END IF
  462.  
  463.     olddest$ = ""
  464.     '' GOTO CUSTINST changed to GOTO CUSTINST2
  465.     GOTO CUSTINST2
  466.     ELSEIF sz$ = "REACTIVATE" THEN
  467.     RecalcPath
  468.     SetDriveStatus
  469.     GOTO GETPATHL1
  470.         '' ELSEIF changed to ELSE
  471.     ''ELSEIF sz$ = "EXIT" THEN    ***
  472.         ELSE
  473.             GOSUB ASKQUIT
  474.             GOTO GETPATHL1
  475.     ''ELSE    ***
  476.             ''UIPop 1
  477.             ''GOTO CUSTINST
  478.     END IF
  479.  
  480.  
  481.  
  482. TOOBIG:
  483.     sz$ = UIStartDlg(INSTALLDLL$, TOOBIG, "FInfo0DlgProc", 0, "")
  484.     IF sz$ = "REACTIVATE" THEN
  485.     RecalcPath
  486.     SetDriveStatus
  487.     GOTO TOOBIG
  488.     END IF
  489.     UIPop 1
  490.     RETURN
  491.  
  492.  
  493.  
  494. BADPATH:
  495.     sz$ = UIStartDlg(INSTALLDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  496.     IF sz$ = "REACTIVATE" THEN
  497.     RecalcPath
  498.     SetDriveStatus
  499.     GOTO BADPATH
  500.     END IF
  501.     UIPop 1
  502.     RETURN
  503.  
  504.  
  505.  
  506. ASKQUIT:
  507.     sz$ = UIStartDlg(INSTALLDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  508.  
  509.     IF sz$ = "EXIT" THEN
  510.     UIPopAll
  511.     ERROR STFQUIT
  512.     ELSEIF sz$ = "REACTIVATE" THEN
  513.     GOTO ASKQUIT
  514.     ELSE
  515.     UIPop 1
  516.     END IF
  517.     RETURN
  518.  
  519.  
  520.  
  521. '**
  522. '** Purpose:
  523. '**     Adds the specified option files to the copy list.
  524. '** Arguments:
  525. '**     ftype%  - type of files to add, one of the following:
  526. '**             PROGRAMFILES, DUOTONEFILES ...
  527. '** Returns:
  528. '**     none.
  529. '*************************************************************************
  530. SUB AddOptFilesToCopyList (ftype%, bogus%) STATIC
  531.  
  532.     IF GetListItem(CHECKSTATES$, ftype%) = "ON" THEN
  533.         SrcDir$ = GetSymbolValue("STF_SRCDIR")
  534.         IF ftype% = PROGRAMFILES THEN
  535.             AddSectionFilesToCopyList "ProgramFiles", SrcDir$, DEST$ + "\"
  536.             AddSectionFilesToCopyList "PluginFiles", SrcDir$, DEST$ + "\plugins"
  537.             AddSectionFilesToCopyList "ProgramWinSysNTFiles", SrcDir$, GetWindowsSysDir()
  538.             AddSectionFilesToCopyList "PhotoCDPT", SrcDir$, PHOTOCDDRIVE$ + PHOTOCDPT$
  539.             AddSectionFilesToCopyList "PhotoCDCP", SrcDir$, PHOTOCDDRIVE$ + PHOTOCDCP$
  540.             IF OnWindowsNT () THEN     
  541.                 AddSectionFilesToCopyList "PluginFiles32", SrcDir$, DEST$ + "\plugins"
  542.             ELSE
  543.                 AddSectionFilesToCopyList "PluginFiles16", SrcDir$, DEST$ + "\plugins"
  544.                 IF GetWindowsEnvironment = 0 THEN
  545.                     AddSectionFilesToCopyList "ProgramWinSysFiles", SrcDir$, GetWindowsSysDir()
  546.                 END IF
  547.             END IF
  548.             AddSectionFilesToCopyList "ProgramWinFiles", SrcDir$, GetWindowsDir()
  549.             IF bogus% = 1 THEN
  550.                 AddSectionFilesToCopyList "BogusFiles", SrcDir$, DEST$ + "\"
  551.             ELSE
  552.                 AddSectionFilesToCopyList "SplitFiles", SrcDir$, DEST$ + "\"
  553.             END IF
  554.             IF InstallWin32s = 1 THEN
  555.                 AddSectionFilesToCopyList "Win32sWinSys", SrcDir$, DESTSYS$
  556.                 AddSectionFilesToCopyList "Win32sWinSysWin32s", SrcDir$, DESTSYS$ + "WIN32S\"
  557.             END IF
  558.         ELSEIF ftype% = TUTORIALFILES THEN
  559.             AddSectionFilesToCopyList "TutorialFiles", SrcDir$, DEST$ + "\tutorial"
  560.         ELSEIF ftype% = FILTERFILES THEN
  561.             AddSectionFilesToCopyList "FilterFiles", SrcDir$, DEST$ + "\plugins"
  562.             AddSectionFilesToCopyList "FilterDispFiles", SrcDir$, DEST$ + "\plugins\dispmaps"
  563.             AddSectionFilesToCopyList "LightingStyles", SrcDir$, DEST$ + "\plugins\ltstyles"
  564.         END IF
  565.         SrcDir$ = ""
  566.     END IF
  567. END SUB
  568.  
  569.  
  570. '**
  571. '** Purpose:
  572. '**     Recalculates disk space for the given option files and sets
  573. '**     the status info symbol "StatusItemsText".
  574. '** Arguments:
  575. '**     ftype% - type of files to add, one of the following:
  576. '**             PROGRAMFILES, PLUGINFILES...
  577. '** Returns:
  578. '**     none.
  579. '*************************************************************************
  580. SUB RecalcOptFiles (ftype%) STATIC
  581.     CursorSave% = ShowWaitCursor()
  582.     ClearCopyList
  583.     AddOptFilesToCopyList ftype%, 1
  584.  
  585.     fExtra% = 0
  586.     IF ftype% = PROGRAMFILES THEN
  587.     ListSym$ = PROGRAMNEEDS$
  588.     IF GetListItem(CHECKSTATES$, PROGRAMFILES) = "ON" THEN
  589.         ''Add extra cost to Windows drive for ini/progman, etc.
  590.         ndrive% = ASC(ucase$(WINDRIVE$)) - ASC("A") + 1
  591.         ReplaceListItem EXTRACOSTS$, ndrive%, "10240"
  592.         fExtra% = 1
  593.     END IF
  594.     ELSEIF ftype% = TUTORIALFILES THEN
  595.         ListSym$ = TUTORIALNEEDS$
  596.     ELSEIF ftype% = FILTERFILES THEN
  597.         ListSym$ = FILTERNEEDS$
  598.     END IF
  599.  
  600.     StillNeed& = GetCopyListCost(EXTRACOSTS$, ListSym$, "")
  601.  
  602.     cost& = 0
  603.     FOR i% = 1 TO 26 STEP 1
  604.     cost&  = cost& + VAL(GetListItem(ListSym$, i%))
  605.     NEXT i%
  606.     ReplaceListItem STATUSTEXT$, ftype%, STR$(cost& / 1024) + " K"
  607.  
  608.     IF StillNeed& > 0 THEN
  609.     ReplaceListItem BIGLIST$, ftype%, "YES"
  610.     ELSE
  611.     ReplaceListItem BIGLIST$, ftype%, ""
  612.     END IF
  613.  
  614.     IF fExtra% THEN
  615.     ReplaceListItem EXTRACOSTS$, ndrive%, "0"
  616.     END IF
  617.     RestoreCursor CursorSave%
  618.     ListSym$ = ""
  619. END SUB
  620.  
  621.  
  622. '**
  623. '** Purpose:
  624. '**     Recalculates disk space and sets option status info according
  625. '**     to the current destination path.
  626. '** Arguments:
  627. '**     none.
  628. '** Returns:
  629. '**     none.
  630. '*************************************************************************
  631. SUB RecalcPath STATIC
  632.  
  633.     CursorSave% = ShowWaitCursor()
  634.  
  635.     RecalcOptFiles PROGRAMFILES
  636.     RecalcOptFiles TUTORIALFILES
  637.     RecalcOptFiles FILTERFILES
  638.  
  639.     RestoreCursor CursorSave%
  640. END SUB
  641.  
  642.  
  643. '**
  644. '** Purpose:
  645. '**     Sets drive status info according to latest disk space calcs.
  646. '** Arguments:
  647. '**     none.
  648. '** Returns:
  649. '**     none.
  650. '*************************************************************************
  651. SUB SetDriveStatus STATIC
  652.  
  653.     ENOUGHDISK% = 1
  654.     drive$ = MID$(DEST$, 1, 1)
  655.     ndrive% = ASC(ucase$(drive$)) - ASC("A") + 1
  656.     cost& = VAL( GetListItem( PROGRAMNEEDS$, ndrive% ) )
  657.     cost& = cost& + VAL( GetListItem( TUTORIALNEEDS$, ndrive% ) )
  658.     cost& = cost& + VAL( GetListItem( FILTERNEEDS$, ndrive% ) )
  659.     free& = GetFreeSpaceForDrive(drive$)
  660.     ReplaceListItem DRIVETEXT$, 1, drive$ + ":"
  661.     ReplaceListItem DRIVETEXT$, 2, STR$(cost& / 1024) + " K"
  662.     ReplaceListItem DRIVETEXT$, 3, STR$(free& / 1024) + " K"
  663.     IF cost& > free& THEN
  664.       ENOUGHDISK% = 0
  665.     END IF
  666.  
  667.     IF drive$ = WINDRIVE$ THEN
  668.         ReplaceListItem DRIVETEXT$, 4, ""
  669.         ReplaceListItem DRIVETEXT$, 5, ""
  670.         ReplaceListItem DRIVETEXT$, 6, ""
  671.     ELSE
  672.         ndrive% = ASC(ucase$(WINDRIVE$)) - ASC("A") + 1
  673.         cost& = VAL( GetListItem( PROGRAMNEEDS$, ndrive% ) )
  674.         cost& = cost& + VAL( GetListItem( TUTORIALNEEDS$, ndrive% ) )
  675.         cost& = cost& + VAL( GetListItem( FILTERNEEDS$, ndrive% ) )
  676.         IF cost& = 0 THEN
  677.             ReplaceListItem DRIVETEXT$, 4, ""
  678.             ReplaceListItem DRIVETEXT$, 5, ""
  679.             ReplaceListItem DRIVETEXT$, 6, ""
  680.         ELSE
  681.             free& = GetFreeSpaceForDrive(WINDRIVE$)
  682.             ReplaceListItem DRIVETEXT$, 4, WINDRIVE$ + ":"
  683.             ReplaceListItem DRIVETEXT$, 5, STR$(cost& / 1024) + " K"
  684.             ReplaceListItem DRIVETEXT$, 6, STR$(free& / 1024) + " K"
  685.             IF cost& > free& THEN
  686.                   ENOUGHDISK% = 0
  687.             END IF
  688.         END IF
  689.     END IF
  690. END SUB
  691.  
  692.  
  693. '**
  694. '** Purpose:
  695. '**     Appends a file name to the end of a directory path,
  696. '**     inserting a backslash character as needed.
  697. '** Arguments:
  698. '**     szDir$  - full directory path (with optional ending "\")
  699. '**     szFile$ - filename to append to directory
  700. '** Returns:
  701. '**     Resulting fully qualified path name.
  702. '*************************************************************************
  703. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  704.     IF szDir$ = "" THEN
  705.     MakePath = szFile$
  706.     ELSEIF szFile$ = "" THEN
  707.     MakePath = szDir$
  708.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  709.     MakePath = szDir$ + szFile$
  710.     ELSE
  711.     MakePath = szDir$ + "\" + szFile$
  712.     END IF
  713. END FUNCTION
  714.  
  715.  
  716.  
  717. SUB UpdateSystemIni STATIC
  718.  
  719.     VxDPath$ = DEST32S$ + "W32S.386"
  720.     SystemIniPath$ = GetWindowsDir()
  721.  
  722.     t% = MakeSystemIni(SystemIniPath$, VxdPath$)
  723.  
  724. END SUB
  725.  
  726.